

define(function (require, exports, modules) {

    // 当前是否为调试模式
    var isDebug = false; //----------todo 发布时修改为false,开发时为true

    // 定义工具类
    var util = util || {};

    util.isDebug = isDebug;

	// 服务器IP
	if(isDebug){
		//测试
		util.port = '';
		util.host = '';
	}else{
		//生产
		util.host = 'www.kekelvxing.cn';
		util.port = '';	// 端口
	}

	// 请求项目路径
	var projectPath = '/one/rest';

	// 请求链接
	util.server = 'http://' + util.host + util.port + projectPath;
    util.NDNserver ="http://localhost:6888/rest";
	/**
     * 提示框
     * @param msg
     */
    util.msg = function(msg){
        if(msg){
            if(isDebug){
                //alert(msg);
                console.log(msg);
            }else{
                //alert(msg);
            }
        }
    };
 
    /**
     * 从请求链接中获取参数
     * @param name
     */
    util.getQueryString = function(name){
    	var reg = new RegExp("(\\?|&)" + name + "=([^(&|#)]*)(#|&|$)");
		var r = window.location.href.match(reg);
		if (r != null)return r[2];
		return null;
    };
    
    JSON = JSON || {
        stringify: function (o) {
            return $.toJSON(o) || '{}';
        },
        parse: function (s) {
            return $.parseJSON(s) || {};
        }
    };

    
    util.loadTpl = function($elm){
        var tplStr = $elm.length ? $elm.html() : '';
        return tplStr.replace(/\<\&/g,'<%').replace(/\&\>/g,'%>');
    };

    // 格式化时间
    if (!Date.prototype.format) {
        Date.prototype.format = function (format) {
            var dateRegExpList = {
                'm+': this.getMonth() + 1,
                'd+': this.getDate(),
                'h+': this.getHours(),
                'i+': this.getMinutes(),
                's+': this.getSeconds()
            };
            if (/(y+)/.test(format)) {
                format = format.replace(RegExp.$1, this.getFullYear().toString().substr(4 - RegExp.$1.length));
            }

            _.each(dateRegExpList, function (val, regExp) {
                if (new RegExp('(' + regExp + ')').test(format)) {
                    var numStr = '0' + val.toString();
                    format = format.replace(RegExp.$1, numStr.length>2 ? numStr.substr(numStr.lastIndexOf('0',numStr.length-2)+1) : numStr);
                }
            });

            return format;
        };
    }

    // 将日期转换成 timestamp
    if (!String.prototype.toTime) {
        String.prototype.toTime = function () {
            return new Date(Date.parse(this.replace(/-/g, '/')));
        };
    }

        
    util.setCookie = function(k,v,d){
        if(d){
            var exp = new Date();
            exp.setTime(exp.getTime() + d*24*60*60*1000);
            document.cookie = k + "="+ encodeURI (v) + ";path=/;expires=" + exp.toUTCString();
        }else{
            document.cookie = k + "="+ encodeURI (v) + ";path=/";
        }
    };
    util.getCookie = function(k){
        if(k){
            var arr,reg=new RegExp("(^| )"+k+"=([^;]*)(;|$)");
            if(arr=document.cookie.match(reg))
                return decodeURI(arr[2]);
            else
                return null;
        }
        return null;
    };
	util.delCookie = function(k){
		util.setCookie(k,"",-1);
	};
	
	window.loading = function(){
		var html = '<div class="common-loading">'+
						'<div class="smallchick"></div>'+
						'<div class="text">Loading...</div>'+
					'</div>';
		$('#page').append(html);
	};
	window.loadingShow = function(){
		window.loading();
	};
	window.loadingRemove = function(){
		$('.common-loading').remove();
	};
    //双按钮信息弹窗
	window.commonAlert = function(text){
    	var html = '<div class="common-alert '+(text ? '' : 'timeout')+'">'+
	    				'<div>'+
					        '<div class="ca-box">'+
					            '<div class="ca-l"></div>'+
					            '<div class="ca-c"></div>'+
					            '<div class="ca-r"></div>'+
					        '</div>'+
					        '<i class="bottom"></i>'+
					        '<p>'+(text? text : '会话超时，是否重新登录？')+'</p>'+
					        '<button class="cancelBtn"><span>取消</span></button>'+
					        '<button class="confirmBtn"><span>确认</span></button>'+
					    '</div>'+
				    '</div>';
    	$('#page').append(html);
    };
    //单按钮信息弹窗
    window.commonAlert_oneBtn = function (text,callback) {
        $('#page').append(
            '<section class="shade Alert-oneBtn">'+
                '<div class="content min">'+
                    '<div class="flex-box">'+
                        '<div class="f-l"></div>'+
                        '<div class="flex"></div>'+
                        '<div class="f-r"></div>'+
                    '</div>'+
                    '<i class="bottom"></i>'+
                    '<p>'+text+'</p><br>'+
                    '<button class="yellowBtn"><span>确认</span></button>'+
                '</div>'+
            '</section>'
        );
        var w = $('#page').width();
        $('.Alert-oneBtn').css({'width': w + 'px','left': 'inherit'});
        $('.Alert-oneBtn button').click(function () {
            $('.Alert-oneBtn').remove();
            $('.desktop button').removeClass('cur');
            if(callback){
            	callback();
            }
        });
    };

    window.CORSRequest=function(method,url,opation,callback) {
        var xhr = new XMLHttpRequest();
        if ("withCredentials" in xhr) {
            // 此时即支持CORS的情况
            // 检查XMLHttpRequest对象是否有“withCredentials”属性
            // “withCredentials”仅存在于XMLHTTPRequest level 2对象里
        } else {
            // 否则检查是否支持XDomainRequest
            // XDomainRequest仅存在于IE中，是IE用于支持CORS请求的方式
            xhr = new XDomainRequest();
        }
        xhr = XDomainRequest();
        xhr.open(method, url, true);
        if(method=="POST"){
            xhr.setRequestHeader("Content-type","application/x-www-form-urlencoded");
            xhr.send(opation);
        }else{
            xhr.send();
        }

        xhr.onload = function(){
          console.log(callback(xhr.responseText))  ;

        };
    };
    window.jsonpGet = function(api,params,callback,fn,err){
//    	console.log(api);
//    	console.log(params);
        var options = {
            async: true,
            dataType: 'jsonp',
            url: api,
            data: params,
            cache: false,
            success: function(reJson){
                console.log('api',api);
                console.log(reJson)
            	if(reJson.code == '-2'){
            		loadingRemove();
            		commonAlert();
            	}else if(reJson.code == '-3'){
            		Backbone.history.navigate('loading',{trigger:true});
            	}else{
            		if(reJson.msg){
            			var msg = reJson.msg;
            			if(msg.indexOf('|') > -1){
            				reJson.msg = msg.split('|')[0];
            			}
            		}
            		if(fn){
            			fn(reJson);
            		}
            	}
            },
            error:function(e){
            	loadingRemove();
            	commonAlert('您的网络异常，请重试');
            	if(err)
            		err();
            }
        };
        return $.ajax(options);
    };

    return util;
});
